home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 081 / matrix.arc / MATRIX.DOC next >
Text File  |  1987-05-11  |  55KB  |  1,456 lines

  1. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3. ░░░░  ░░░░░░░  ░░░        ░░░      ░░░       ░░░░      ░░    ░░░░░░    ░░░░░░░
  4. ░░░░ ▓▓░░░░░░ ▓▓░░ ▓▓▓▓▓▓▓▓░  ▓▓▓▓▓▓░░ ▓▓▓▓▓▓▓░░░ ▓▓▓▓▓▓░ ▓▓▓▓░░░░░ ▓▓▓▓░░░░░░
  5. ░░░░ ▓▓▓░░░░ ▓▓▓░░ ▓▓▓▓▓▓▓▓░ ▓▓▓▓▓▓▓▓░ ▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓░░ ▓▓░░░░░░░ ▓▓░░░░░░░
  6. ░░░░ ▓▓▓▓░░ ▓▓▓▓░░ ▓▓░░░ ▓▓░░▓░ ▓▓░░▓░ ▓▓░░░ ▓▓░░░░ ▓▓░░░░░ ▓▓░░░░░ ▓▓░░░░░░░░
  7. ░░░░ ▓▓░▓▓ ▓▓ ▓▓░░ ▓▓░░░ ▓▓░░░░ ▓▓░░░░ ▓▓░░░ ▓▓░░░░ ▓▓░░░░░░ ▓▓░░░ ▓▓░░░░░░░░░
  8. ░░░░ ▓▓░░░▓░░ ▓▓░░ ▓▓░░░ ▓▓░░░░ ▓▓░░░░ ▓▓░░░ ▓▓░░░░ ▓▓░░░░░░░ ▓▓  ▓▓░░░░░░░░░░
  9. ░░░░ ▓▓░░░░░░ ▓▓░░ ▓▓    ▓▓░░░░ ▓▓░░░░ ▓▓    ▓▓░░░░ ▓▓░░░░░░░░ ▓▓▓▓░░░░░░░░░░░
  10. ░░░░ ▓▓░░░░░░ ▓▓░░ ▓▓▓▓▓▓▓▓░░░░ ▓▓░░░░ ▓▓▓▓▓▓▓░░░░░ ▓▓░░░░░░░░░ ▓▓░░░░░░░░░░░░
  11. ░░░░ ▓▓░░░░░░ ▓▓░░ ▓▓▓▓▓▓▓▓░░░░ ▓▓░░░░ ▓▓▓▓▓▓░░░░░░ ▓▓░░░░░░░░ ▓▓▓▓░░░░░░░░░░░
  12. ░░░░ ▓▓░░░░░░ ▓▓░░ ▓▓░░░ ▓▓░░░░ ▓▓░░░░ ▓▓░░ ▓▓░░░░░ ▓▓░░░░░░░ ▓▓░ ▓▓░░░░░░░░░░
  13. ░░░░ ▓▓░░░░░░ ▓▓░░ ▓▓░░░ ▓▓░░░░ ▓▓░░░░ ▓▓░░░ ▓▓░░░░ ▓▓░░░░░░ ▓▓░░░ ▓▓░░░░░░░░░
  14. ░░░░ ▓▓░░░░░░ ▓▓░░ ▓▓░░░ ▓▓░░░░ ▓▓░░░░ ▓▓░░░ ▓▓░░   ▓▓ ░░░░ ▓▓░░░░░ ▓▓░░░░░░░░
  15. ░░░  ▓▓░░░░░  ▓▓░  ▓▓░░  ▓▓░░░  ▓▓░░░  ▓▓░░░ ▓▓░░ ▓▓▓▓▓▓░  ▓▓░░░░░░░ ▓▓░░░░░░░
  16. ░░░░▓▓▓▓░░░░░▓▓▓▓░▓▓▓▓░░▓▓▓▓░░░▓▓▓▓░░░▓▓▓▓░░░▓▓▓░░▓▓▓▓▓▓░░▓▓▓░░░░░░░░▓▓▓░░░░░░
  17. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  18. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  19.  
  20.  
  21.  
  22.                +---------------------------------------------+
  23.                |                                             |
  24.                |   "Arrogance is the mother of invention."   |
  25.                |                                             |
  26.                |               - Guido Palermo -             |
  27.                |   Opus Bylaws and Covert Action Committee   |
  28.                |                                             |
  29.                |                                             |
  30.                |                                             |
  31.                |        Actually, Guido just claims this     |
  32.                |        quote.  When I checked, the quote's  |
  33.                |        serial number had been filed off...  |
  34.                |        so it's impossible to tell for sure. |
  35.                |                                             |
  36.                +---------------------------------------------+
  37.  
  38.  
  39.  
  40.  
  41.          +-----------------------------------------------------------+
  42.          |                                                           |
  43.          |        The Opus Computer-Based Conversation System        |
  44.          | (c) Copyright 1987, Wynn Wagner III, All Rights Reserved  |
  45.          |                                                           |
  46.          |                 YOOHOO and YOOHOO/2U2 are                 |
  47.          |   Copyright 1987, Wynn Wagner III, All Rights Reserved    |
  48.          |                                                           |
  49.          +-----------------------------------------------------------+
  50.  
  51.  
  52.  
  53.  
  54.          WHAT YOU ARE READING
  55.          --------------------
  56.  
  57.          Because of a great deal of interest in Opus outbound, we're
  58.          releasing this document before the release of the code.
  59.  
  60.          This file explains the theory behind Opus outbound in a
  61.          general sort of way.
  62.  
  63.          The document is preliminary.  Everything here is
  64.          subject to change.
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72. ------------------------------------------------------------------------------
  73.  
  74.  
  75.          Opus now supports outbound matrix messages.
  76.  
  77.          This file is a general explanation of the methods involved
  78.          with sending messages from your system to other systems.
  79.  
  80.  
  81.  
  82.          IMPORTANT
  83.          ---------
  84.  
  85.          You won't find any step-by-step information here.  This is
  86.          a discussion on the theories behind Opus Outbound.
  87.  
  88.          The reason is that the ideas are going to seem a little
  89.          different.  I'll go further and say that if you skip this
  90.          background information, you are going to have a hard go of
  91.          it later!
  92.  
  93.          I feel it's important to setup your head for all of this
  94.          before you setup your computer.
  95.  
  96.  
  97.  
  98.          SIMPLE
  99.          ------
  100.  
  101.          Doing outbound mail with Opus is fairly simple.  In fact,
  102.          getting that message across has been one of the toughest
  103.          jobs.
  104.  
  105.          Some of the beta testers say most of their work fell into
  106.          one of two categories:
  107.  
  108.                   * deleting lines of batch and routing files
  109.  
  110.                   * convincing themselves that fewer lines of
  111.                     instruction will do just as much work
  112.  
  113.  
  114.  
  115.          IDEA #1
  116.          -------
  117.  
  118.          With Opus, "mail events" are less important.  To be 
  119.          thoroughly honest about it, they don't even exist.
  120.  
  121.          Instead, we'll be dealing with "behavior windows."
  122.  
  123.          With an event, you have to give every detail... making
  124.          statements that are procedural in nature.  
  125.  
  126.          With a behavior window, you paint with a wide brush telling
  127.          the system what to do with classes of remote systems.
  128.  
  129.          When systems could handle matrix traffic only during special
  130.          times, routing and times were important.  Because more and
  131.          more systems can process mail at any time, the idea of a
  132.          schedule becomes less important.
  133.  
  134.          The item of prime importance in Opus is COST.  We are going
  135.          to try to relieve you of the tedius details of scheduling
  136.          and concentrate on doing things for the least cost.
  137.  
  138.          There'll be more on this later.
  139.  
  140.  
  141.  
  142.          IDEA #2
  143.          -------
  144.  
  145.          Another new idea deals with the way bundles are created.
  146.  
  147.          A "bundle" is what some other systems call a "packet."  In
  148.          network operations, a packet has a special meaning... a meaning
  149.          that has nothing to do with network mail.  An "XModem Block"
  150.          is a packet in network terminology.  To avoid confusion with
  151.          an established word, Opus docs use "bundle."
  152.  
  153.          Anyway... you are probably used to seeing bundles generated
  154.          several times.  With some programs, bundles are build every 
  155.          time a mail schedule starts.  As a result, one message may be
  156.          put into a bundle several times.
  157.  
  158.          With Opus, bundles are built once by an external program called
  159.          oMMM (the Opus Matrix Message Masher).  Although I wrote the
  160.          original oMMM, Bob Hartman has adopted the program and has
  161.          added lots of widgets and handy features.
  162.  
  163.  
  164.          IDEA #3
  165.          -------
  166.  
  167.          Opus uses "Continuous Mail". If you are already using a program
  168.          that supports "Crash Mail", then you understand a liitle of what
  169.          Continuous Mail does. Continuous Mail differs from Crash Mail in
  170.          a couple of areas.
  171.  
  172.          In other mailer systems, you would mark a message a "Crash" 
  173.          meaning that you wanted this message to go out NOW. These mailer
  174.          programs would shut down human caller access to the bbs and
  175.          try like the dickens to get that message through.
  176.  
  177.          Opus uses Continuous Mail, meaning that this is a message going 
  178.          to a system that can accept mail at any time of the day. Opus
  179.          does not make any frantic attempts to dial out, rather it will
  180.          try to deliver the mail in between human callers. The actual
  181.          routine to determine if Opus should call or not is based on the
  182.          number of seconds Opus has been free without either a human caller
  183.          or a previous mail attempt. It is a random number of seconds, 
  184.          between 30 seconds and 2 minutes.
  185.  
  186.          You can control this behavior with "Z-Event Windows" that we will
  187.          cover later.  
  188.  
  189.  
  190.          IDEA #4
  191.          -------
  192.  
  193.          The driving forces of outbound traffic are file names!
  194.  
  195.          You'll have a special sub-directory set aside just for bundles
  196.          and other matrix files.  It's a sub-directory that belongs to
  197.          Opus and shouldn't have anything else put in there.  Opus will
  198.          maintain this sub-directory for you.
  199.  
  200.          It's kind of a "black hole."  David Finster says it takes
  201.          some getting used to.
  202.  
  203.          As soon as you run oMMM, messages that are marked KILL/SENT
  204.          in your matrix message area will disappear.  They haven't
  205.          been sent, yet.  They're just bundled and ready to go.
  206.  
  207.          File names are important to opus...
  208.  
  209.  
  210.  
  211.  
  212.          BUNDLE NAMES
  213.          ------------
  214.  
  215.          The file names of the bundles tell Opus how to treat the
  216.          different bundles.  Here's a typical bundle name:
  217.  
  218.                            12345678.OUT
  219.  
  220.          That says the bundle is for 1234/5678.  The numbers are in
  221.          hex (base 16).  The ".OUT" means it is a regular bundle.
  222.  
  223.          Other bundle extensions include:
  224.  
  225.                            .HUT     ... hold the bundle for pickup
  226.  
  227.                            .CUT     ... the other system can receive
  228.                                         continuous mail
  229.  
  230.          One nice thing is that you can manually change the file's
  231.          extension if you need to.  That would change the behavior
  232.          of the bundle when Opus sees it next.
  233.  
  234.          The oMMM program knows about these extensions and creates
  235.          them based on information you put into the oMMM control
  236.          file.  You'll have statements like this:
  237.  
  238.                            HOLD 124/102
  239.  
  240.          That would create a .HUT bundle file, and Opus will hold
  241.          that packet for 124/102 to call and pick it up.
  242.  
  243.  
  244.  
  245.  
  246.          FLOW FILE NAMES
  247.          ---------------
  248.  
  249.          Files are also sent through the matrix.  oMMM builds and
  250.          maintains a file that tells Opus what files to send (or hold)
  251.          for whom.  A typical "file attach" file might be named:
  252.  
  253.                            12345678.FLO
  254.  
  255.          Other flow file extensions are:
  256.  
  257.                            .HLO     ... hold these files for pickup
  258.  
  259.                            .CLO     ... the other system can receive
  260.                                         continuous mail
  261.  
  262.          A flow file is just a text file.  It contains a list of files
  263.          that are to be sent to another system:
  264.  
  265.                            e:\net\outbound\00096581.mo1
  266.                            e:\pascal\notes.doc
  267.  
  268.          File names in a flow file never include wildcards.
  269.  
  270.  
  271.  
  272.  
  273.          ARCHIVED MESSAGES
  274.          -----------------
  275.  
  276.          The oMMM program will put messages into archives for you.
  277.          Details on how this is done can be found in the oMMM
  278.          documentation.
  279.  
  280.          The point here is that oMMM combines the functionality of
  281.          "generating packets" with that of programs like ArcMail.
  282.  
  283.          oMMM creates archives using the same numbering convention 
  284.          as other message archive programs.  The file name is the
  285.          difference between the sender's net/node and the receiver's
  286.          net/node.   The file extension is ".MO#" where `#' is a
  287.          number between 0 and 9.  In this case, MO stands for "messages
  288.          for outbound" and has nothing to do with Monday.  oMMM will
  289.          NOT produce a "TU" or "WE" (etc) file.
  290.  
  291.  
  292.  
  293.  
  294.          EXAMPLE
  295.          -------
  296.  
  297.          So far, we've covered bundles and flow files.  We've also hit
  298.          on some of the high points of oMMM.
  299.  
  300.          Here's the flow of a message...
  301.  
  302.          Let's say I've written a message to Mike Kelleher.  The message
  303.          is in my matrix message area and is flagged KILL/SENT.
  304.  
  305.          oMMM is executed to convert the message into a bundle.  In my
  306.          control file for oMMM, I have this:
  307.  
  308.                            CRASH 161/521 161/ALL
  309.  
  310.          The word "crash" is VERY misleading.  We just haven't come up
  311.          with a better word, yet.  CRASH in this case means that Mike
  312.          (161/521) runs a system that can receive continuous mail.
  313.  
  314.          This control file line tells oMMM to build a message archive
  315.          to 161/521.  In the archive will be any messages to Mike (521)
  316.          as well as messages to anybody else in net 161.
  317.  
  318.          When the flurry of activity dies down, you'll have a file 
  319.          called "00A10209.CLO" and another one with an ".MO1" extension.
  320.  
  321.          The message is now in queue.
  322.  
  323.  
  324.  
  325.                       +-------------------------------+
  326.                       |                               |
  327.                       | "Roads?  Where we're going we |
  328.                       | don't need roads."            |
  329.                       |                               |
  330.                       |     - from Back To The Future |
  331.                       |                               |
  332.                       +-------------------------------+
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.          ENTER OPUS, STAGE RIGHT
  340.          -----------------------
  341.  
  342.          Opus can tell by looking at the outbound sub-directory (called
  343.          the HOLD AREA) that there's a bundle for Mike.  Opus can tell
  344.          that Mike's system can receive continuous mail.
  345.  
  346.          It's in the middle of the afternoon.  Phone rates between Dallas
  347.          and San Francisco are the highest they'll be all day.  It's a
  348.          bad time to call.
  349.  
  350.          We aren't controlling calling times because of our software.  
  351.          The software doesn't care.  Both ends can handle matrix traffic
  352.          at any time.  We're controlling calling times based on the
  353.          phone rates.
  354.  
  355.          I have a Z-EVENT set in Opus that tells the system to make calls
  356.          only to local systems that can receive continuous mail.
  357.  
  358.  
  359.  
  360.  
  361.          Z-EVENT: The Behavior Window
  362.          ----------------------------
  363.  
  364.          A Z-EVENT is setup using the Opus event manager.  It starts
  365.          out looking like any other event... except that it has a
  366.          Z for a tag.
  367.  
  368.          In addition to the start time and event length, there are 
  369.          several yes/no questions that go along with a Z-EVENT:
  370.  
  371.  
  372.                   Local only? .......... YES: only make calls to systems
  373.                                               whose cost field is 0.
  374.                                          NO:  it's okay to make calls
  375.                                               that cost money
  376.  
  377.                   #CM only? ............ YES: only call systems who have
  378.                                               .CUT and/or .CLO files
  379.                                          NO:  not restricted to continuous
  380.                                               mail systems
  381.  
  382.                   Mail only? ........... YES: don't let human callers
  383.                                               on-line, concentrate on mail.
  384.                                          NO:  humans and the matrix coexist.
  385.  
  386.                   File requests ok? .... YES: let other systems make file
  387.                                               requests
  388.                                          NO:  don't allow file requests
  389.  
  390.  
  391.          During the day, I have a Z-EVENT that has LOCAL, #CM, and
  392.          FILE REQUESTS set to YES.  I don't want to make long-distance
  393.          calls, and I don't want to call systems that can't handle
  394.          mail on a continuous basis.
  395.  
  396.  
  397.  
  398.  
  399.          POOR MIKE, JUST HANGING OUT
  400.          ---------------------------
  401.  
  402.          So, there sits the .CLO file for Mike (see EXAMPLE above).
  403.          Although it says Mike's board can accept mail on a continuous
  404.          basis, the COST field in the node list for 161/521 isn't zero.
  405.          It's a long distance call.
  406.  
  407.          Opus will not call 161/521.
  408.  
  409.          At midnight, the phone rates are lower.  I have another Z-EVENT
  410.          that allows #CM only.  In other words, at midnight I drop the
  411.          requirement that all calls be local.
  412.  
  413.          At that point, Opus will start trying to send the stuff.  (Knowing
  414.          Mike's board, it will take all night to get it through!)
  415.  
  416.  
  417.  
  418.  
  419.  
  420.          Z-EVENT OVERVIEW
  421.          ----------------
  422.  
  423.          Here's how my Z-Events go...
  424.  
  425.                   Daytime ..... #CM, LOCAL
  426.  
  427.                   Overnight ... #CM
  428.  
  429.                   NMH ......... MAIL_ONLY
  430.  
  431.          For NMH (National Mail Hour), I drop the #CM requirement.
  432.          That let's Opus send to systems that can't handle continuous
  433.          mail.
  434.  
  435.          The point to all of this is that messages stay bundled all
  436.          the time.  What changes is the behavior of Opus.
  437.  
  438.  
  439.  
  440.  
  441.  
  442.          THAT'S ABOUT IT
  443.          ---------------
  444.  
  445.          At this point, the standard reaction is "I have some special
  446.          cases that this won't handle.  I have several pages of routing
  447.          and batch files to do all this special stuff."
  448.  
  449.          This is my experience: sysop thought patterns are what 
  450.          complicate matters.
  451.  
  452.          Possibly there are some special cases that Opus outbound can't
  453.          handle.  I haven't seen any.
  454.  
  455.          In the rest of this file, you'll find excerpts of NEW.DOCs form
  456.          various beta releases.  There are details on the HOLD AREA (sub-
  457.          directory), file requests, and dialing scripts.
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.          
  468.  
  469.  
  470.  
  471.                      Control file additions
  472.                      ----------------------
  473.  
  474.  
  475.  
  476.  
  477.    Matrix Hold Area    
  478.    ----------------
  479.  
  480.  
  481.          Opus wants its own sub-directory for outbound traffic.
  482.          Declare that area like this:
  483.  
  484.  
  485.                   MATRIX HOLD_AREA C:\Opus\Outbound\
  486.  
  487.  
  488.          The system will maintain that sub-directory for you.  There
  489.          are no user-servicable parts inside.
  490.  
  491.          That's not really true.  We'll be storing the OUT, FLO, and
  492.          MO? files there.  You can change the names of the files, and
  493.          that will affect the behavior of Opus.
  494.  
  495.          I strongly suggest you don't put other files in this
  496.          holding area.
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.    Outbound Matrix Traffic
  504.    -----------------------
  505.  
  506.  
  507.          You have two primary methods for controlling phone calls made
  508.          by your Opus system: the control file and the event manager.
  509.  
  510.          The control file method is in effect if there is no event
  511.          to over-ride it.  In other words, Opus will give priority to
  512.          the event (described later).
  513.  
  514.  
  515.  
  516.          To disable outbound calls, put this into your control file:
  517.  
  518.                   Matrix Send NOTHING
  519.  
  520.  
  521.          To disable long distance outbound calls, put this into your
  522.          control file:
  523.  
  524.                   Matrix Send LOCAL
  525.  
  526.  
  527.          With those two restrictions, Opus now attempts to send any
  528.          outbound material it finds in the sub-directory declared
  529.          as your Hold_Area.
  530.  
  531.          If you want to keep humans off-line during a critical mail
  532.          period, include this:
  533.  
  534.                   Matrix Allow MAIL ONLY
  535.  
  536.  
  537.  
  538.  
  539.          IMPORTANT:  You can over-ride these control file settings
  540.                      with the "Z" Behavior Windows described below.
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.     More on "Z" Windows
  548.     -------------------
  549.  
  550.  
  551.                 +----------------------------------------------+
  552.                 |                                              |
  553.                 | "But what HAPPENS during this event?"        |
  554.                 |                                              |
  555.                 | "Nothing.  It's not a real event.  A better  |
  556.                 |  phrase would be BEHAVIOR WINDOW."           |
  557.                 |                                              |
  558.                 +----------------------------------------------+
  559.  
  560.  
  561.          When a "Z" event is in progress, it's settings remain in
  562.          effect until the next "Z" event.  In other words, the
  563.          settings do NOT RETURN TO THEIR ORIGINAL VALUE at the "end"
  564.          of this event.     
  565.  
  566.          Let's say you declare a "Z" event for every day of the week
  567.          from 9am to noon.  The behavior you describe in the "Z" event
  568.          will be in effect for those three hours.  Here's the part that
  569.          needs to be stressed... at noon, the behavior will remain in
  570.          effect unless there is a "Z" event declared then.
  571.  
  572.          That should probably be repeated...
  573.  
  574.                   * You can setup matrix behavior in the control file.
  575.                     If Opus runs into a "Z" event that is in progress, 
  576.                     those control file values are gone for the life
  577.                     of the program.
  578.  
  579.                   * To actually "end" a "Z" event, you have to begin
  580.                     another "Z" event.  In this case, the duration of 
  581.                     the event means "go to these values whenever you
  582.                     find yourself in this time period."
  583.  
  584.                   * The end of a "Z" event does NOT mean return to the
  585.                     old values.
  586.  
  587.                   * Whew.
  588.  
  589.  
  590.   NOTE:   All of this does not mean that you can take the lazy way out
  591.           and set your Z windows for a duration of 1 minute. You should
  592.           still set the duration for the actual lenght of the window so
  593.           that Opus will know what to do when you start the program in
  594.           the middle of a window.      
  595.  
  596.  
  597.  
  598.          You can use this event to set the following items:
  599.  
  600.                   Local only.........No "Cost" phone calls are made
  601.  
  602.                   Regular mail.......Outbound goes to all (except HOLDs)
  603.  
  604.                   Continuous mail....Only packets (etc) marked for 
  605.                                      continuous mail are sent
  606.  
  607.                   Mail only..........No human callers are allowed on-line
  608.  
  609.                   No traffic.........Outbound mail is turned off
  610.  
  611.  
  612.          Using the "!" command off the main menu, select the event
  613.          section.  Then just set an otherwise unused event to a type "Z".
  614.          Additional selections will appear.
  615.  
  616.  
  617.  
  618.  
  619.  
  620.       Matrix Bundling     
  621.       --------------- 
  622.  
  623.  
  624.          There is no internal bundler (the thing that maintains
  625.          message bundles destined for some other system).  You can
  626.          exit Opus with a pre-set ErrorLevel to call the bundler
  627.          program when the contents of the matrix area changes.
  628.  
  629.          For example, if you call and enter a message into your
  630.          network area, Opus will exit with an ErrorLevel of 11
  631.          *after* you have ended your regular session...
  632.  
  633.                    Matrix After Edit Exit 11
  634.  
  635.          For information on one possible bundling method, refer to
  636.          "oMMM"... a stand-alone no-frills bundling program.
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.      Enabling File Requests
  648.      ----------------------
  649.  
  650.          If you want to allow file requests, put this into your control
  651.          file:
  652.  
  653.                   Matrix allow requests
  654.  
  655.  
  656.          IMPORTANT:  You can temporaraly over-ride these control file 
  657.                      settings with the "Z" windows described earlier.
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.      Approval Listing
  665.      ----------------
  666.  
  667.          In addition, you will need a file containing a list of files
  668.          approved for file requests.  This is a standard, garden-variety
  669.          text file.  It MAY include wildcards.  Declare the file like this:
  670.          
  671.                   Matrix okfile c:\opus\okfile.lst
  672.  
  673.          This is a "raw" list.  It should contain nothing other than
  674.          file name.  Only one file name should be on a line.  The items
  675.          must begin in the far left column.
  676.  
  677.          Example:          c:\dl\pascal\*.*
  678.                            c:\net\node*.a??
  679.                            c:\dl\forth\this.one
  680.  
  681.                            ^
  682.                            |
  683.                            |
  684.                            Pretend this starts way over there
  685.                                                           |
  686. <---------------------------------------------------------+
  687.  
  688.  
  689.  
  690.          
  691.  
  692.     SYSTEM ADVERTISEMENT AND FILE LIST
  693.     ----------------------------------
  694.  
  695.          One more declaration will generalize your list of available
  696.          files.  In other words, if somebody wants to know what you have
  697.          on-line that is available for requesting, the standard Opus
  698.          method is to request a file called FILES.  When Opus receives
  699.          a request for FILES, it will automatically transmit the
  700.          file you declare like this:
  701.  
  702.                   Matrix avail c:\opus\filelist.arc
  703.  
  704.  
  705.          NOTE: Do NOT put comments on the `okfile' or on the `avail'
  706.                lines.
  707.  
  708.  
  709.          In addition to a listing of files, it would be a good idea
  710.          to include a statement that wildcards are not allowed on
  711.          file requests (see below).  This file can also tell the
  712.          caller something about your system.
  713.  
  714.          You include the extension in the control file... so the file
  715.          can be a TXT, DOC, ARC or any other kind of file.
  716.  
  717.          PLEASE do not use "filelist.arc" as the name of the file.
  718.          For The POLE, we're using "POLELIST.LST".  Using this scheme,
  719.          every system can have a unique file name.  This should make
  720.          file management much easier on the caller.
  721.  
  722.  
  723.  
  724.  
  725.  
  726.          IMPLEMENTATION RESTRICTION
  727.          --------------------------
  728.  
  729.          The requesting system cannot use a wildcard in the file
  730.          name.  By letting you put wildcards in the list of approved
  731.          files, it makes it a little tedious to allow wildcards in
  732.          the request.  Not impossible.  Just tedious.  So... to make
  733.          things easy on the sysop... I made a design decision to make
  734.          it harder on the calling system.  This will probably change
  735.          sometime down the line, but I have my hands too full to worry
  736.          about such stinkin' nicities.  As it were.
  737.  
  738.  
  739.  
  740.  
  741.  
  742.  
  743.          ERRORS: NO SUCH FILE
  744.          --------------------
  745.  
  746.          This version of Opus sends the "avail" file if no requested
  747.          files are available.  Eventually this Oops file will be
  748.          separate and configurable via the control file.
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.          BEFORE ANYBODY ASKS
  756.          -------------------
  757.  
  758.          No, Opus does not currently have a method for initiating
  759.          file requests.
  760.  
  761.          Opus can only accept a file request from another system.
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.   SPECIAL MATRIX MENU
  769.   -------------------
  770.  
  771.  
  772.          When Opus is waiting for a call, you can get to a special 
  773.          matrix section.
  774.  
  775.          Press "M" when you see the "Ready" status line.
  776.  
  777.          The menu includes these items:
  778.  
  779.         INFORMATION............generate a chart showing the status of
  780.                                pending outbound traffic.
  781.  
  782.  
  783.         POLL...................call a system whether or not there is any
  784.                                pending outbound mail.  If there is a
  785.                                connection, Opus will dynamically generate
  786.                                and transmit a dummy message bundle if there
  787.                                isn't a real one available.
  788.  
  789.                                As many as 9 or 10 tries will be made.  You
  790.                                can stop the poll by pressing <esc>.  If no
  791.                                connection is made after several attempts,
  792.                                Opus will recycle to its on-line ("Ready")
  793.                                state.
  794.  
  795.                                If a connection is made, you can expect any
  796.                                items to be transmitted ... even those
  797.                                marked as "hold".
  798.  
  799.                                When you cancel a poll, you may have to 
  800.                                press <esc> a couple of times.  The first
  801.                                will cancel the current call.  The second
  802.                                one will cancel the polling sequence.
  803.  
  804.  
  805.  
  806.         UNPACK.................process/toss any PKT files found in the
  807.                                current default sub-directory.  This is the
  808.                                same thing as the familiar `-u' command
  809.                                line option.
  810.  
  811.  
  812.  
  813.         CLEAR UNDIALABLES......Delete all "*.$$#" marker files in the
  814.                                outbound area. Opus keeps these files to
  815.                                mark which boards have been called
  816.                                unsuccesfully. If these files are not 
  817.                                deleted, Opus will never try them again.
  818.                 
  819.                                They can also be deleted automatically, 
  820.                                using a "Z" maintance event.
  821.  
  822.  
  823.  
  824.  
  825.  
  826.   UNSUCCESSFUL CONNECTIONS
  827.   ------------------------
  828.  
  829.  
  830.          Previous versions would make an undetermined number of phone
  831.          calls to a remote system.
  832.  
  833.          Beginning with this version, a counter is maintained.  It is
  834.          incremented when there is a connection that does is not
  835.          consumated.  If there is a carrier but no matrix session, 
  836.          this counter gets bumped.
  837.  
  838.  
  839.  
  840.          TECHIE STUFF MOST CAN SKIP
  841.          --------------------------
  842.  
  843.          The counter is a 0-byte file in the outbound holding area.
  844.  
  845.          The file name is something like this:
  846.  
  847.                   ########.$$#
  848.                   ||||||||   |
  849.                   \||/\||/   |
  850.                    \/  \/    |
  851.                    net node  counter
  852.  
  853.          The net and node are 4 character hex numbers.  The counter can
  854.          be anything from 0 to 9.
  855.  
  856.          If Opus finds such a file, it's supposed to refuse to make a
  857.          call if the counter is 4 or greater.  If it equals 4, you'll
  858.          get a log entry.
  859.  
  860.          The "flag" for this counter is an "?" in the middle of the
  861.          extension.  The first character of the extension is also an
  862.          "$"... but that is NOT guaranteed for future versions.  You 
  863.          should use a wildcard for the first character if you want to
  864.          be upward compatible.
  865.  
  866.          Sneaky Arrogant Hacker Trick: if you want to guarantee continued 
  867.          calls, try building a read-only file that looks like the counter 
  868.          file.  It should have a low counter value.  If the file is 
  869.          read-only, Opus will see it but will be unable to increment the 
  870.          counter.  I should say this is totally untested, but it sounds 
  871.          like it might work.
  872.  
  873.          The reason for such a method is simple.  A 0-byte file takes up
  874.          NO disk space except for the directory entry.  Plus, it is easy
  875.          to access because DOS does a good job of buffering directories.
  876.          Access routines are in DOS ... so they don't have to be in Opus.
  877.          In other words, it seems like a good way to us "database code"
  878.          that's already in your computer... and to do so without using
  879.          up any disk space you don't already have allocated.
  880.  
  881.  
  882.  
  883.  
  884.  
  885.          PLEASE READ THIS PART
  886.          ---------------------
  887.  
  888.          Here's the situation... if Opus finds the counter file showing
  889.          it tried to call a board unsuccessfully... it will not make
  890.          further calls.
  891.  
  892.          You can manually delete them to enable further calls to
  893.          the board(s) in question by using the "Clear Undialables"
  894.          command on the Matrix Menu.
  895.  
  896.          There is also a HOUSECLEANING Z-EVENT which will remove these
  897.          Dollar-Sign Files.
  898.  
  899.  
  900.  
  901.  
  902.  
  903.   IMMEDIATE CALL
  904.   --------------
  905.  
  906.  
  907.          When Opus is waiting for a call, you can force it to make an
  908.          outbound call immediately.
  909.  
  910.          Press "C" when you see the "Ready" status message.
  911.  
  912.          If it feels it needs to, Opus will make a call.  In other words,
  913.          this does not force Opus to actually originate a matrix session
  914.          unless there is sendable outbound traffic.
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.   WILD ECHOMAIL
  922.   -------------
  923.  
  924.  
  925.          The unarc routine now uses wildcards.  In other words, it will
  926.          try to unarc "*.MO?" in your matrix hold area.  
  927.            
  928.          If you get something from a message archiver other than oMMM 
  929.          (ie "TU?", "WE?"....), it will try to unarc that specific file.
  930.            
  931.          This change means that attached messages are no longer needed 
  932.          for archived messages!  oMMM does not produce such a message.
  933.            
  934.  
  935.  
  936.  
  937.  
  938.  NEW MATRIX BEHAVIOR MASK
  939.  ------------------------
  940.  
  941.          Using the event setup menu, you can tell Opus not to
  942.          exit after Crash Mail and ArcMail.
  943.  
  944.          The mask is called "Exits suppressed" on the menu.
  945.  
  946.          If you turn this on, then any "EXIT AFTER CRASHMAIL" and 
  947.          "EXIT AFTER ARCMAIL" in your control file are ignored.
  948.  
  949.  
  950.  
  951.  
  952. ------------------------------------------------------------------------------
  953.  
  954.  
  955.                       MATRIX SESSION SCRIPTS
  956.                       ----------------------
  957.  
  958.  
  959.        +-------------------------------------------------------+
  960.        |                                                       |
  961.        |  "This is where the D.J. talks, Don't say anything."  |
  962.        |  "O.k., eh."                                          |
  963.        |                ---- Bob and Doug McKenzie             |
  964.        |                                                       |
  965.        +-------------------------------------------------------+
  966.  
  967.  
  968.  
  969.  
  970.          Instead of a phone number, the "phone" field of a record in
  971.          the node list can contain the name of a script file.
  972.  
  973.          Script files are in quotes...
  974.  
  975.                   PHONE NUMBER:     555-1212
  976.  
  977.                   SCRIPT FILES:     "555-1212"
  978.                                     "HARDWIRE.CTL"
  979.                                     "SATORE.SPT"
  980.  
  981.  
  982.          All script files must be in the sub-directory you've declared
  983.          as being the NET_INFO sub-directory.
  984.  
  985.          NOTE:    This addition to Opus does not address any methods for
  986.                   getting a quoted file name into the node list.  But if
  987.                   you can get them in, Opus will understand them.
  988.  
  989.  
  990.  
  991.  
  992.          CONTENTS OF A SCRIPT FILE
  993.          -------------------------
  994.  
  995.          A script file is created with a text editor.  Each line must
  996.          contain a KEYWORD.  In most cases, it will contain other material.
  997.  
  998.          The keyword must be in the far lefthand column of each line.  The
  999.          system is not sensitive to the case of keywords... upper- and
  1000.          lowercase is the same.  
  1001.  
  1002.          Some keywords require additional information.  You should put
  1003.          a single space after the keyword, then start typing the 
  1004.          additional information.  In other words, if you put a keyword
  1005.          then TWO spaces... the second space will be considered part of
  1006.          the additional information.
  1007.  
  1008.  
  1009.  
  1010.  
  1011.          KEYWORDS
  1012.          --------
  1013.  
  1014.          In the examples below, please pretend the keywords appear in the 
  1015.          far lefthand column!
  1016.  
  1017.  
  1018.                                -----------------------------------------------
  1019.  
  1020.                   XMIT     ... send something to the modem.  As in the
  1021.                                modem initialization string in the control
  1022.                                file, Opus understands the following 
  1023.                                special characters:
  1024.  
  1025.                                     ~  ... slight pause
  1026.                                     |  ... transmit a <cr> character
  1027.  
  1028.                                EXAMPLE:
  1029.  
  1030.                                     xmit ATZ|
  1031.                                     xmit AT|~ATHO|
  1032.  
  1033.                                              
  1034.                                -----------------------------------------------
  1035.  
  1036.                   DIAL     ... transmit whatever additional information
  1037.                                appears on the same line of the script, 
  1038.                                then wait for a modem response.
  1039.  
  1040.                                If the modem reports any kind of failure
  1041.                                (eg "BUSY"), the script will be terminated.
  1042.  
  1043.                                NOTE: The dial "prefix" and "suffix" from
  1044.                                      the control file are NOT used here.
  1045.  
  1046.                                EXAMPLE:
  1047.  
  1048.                                     dial 555-1212
  1049.  
  1050.  
  1051.                                -----------------------------------------------
  1052.  
  1053.                   PHONE    ... a special-case way of transmitting the remote
  1054.                                system's phone number.  It works like XMIT.
  1055.                                In other words, there's no waiting around
  1056.                                for a response.
  1057.  
  1058.  
  1059.                                -----------------------------------------------
  1060.  
  1061.                   WAIT     ... wait for a character from the remote system.
  1062.                                A 40 second period of no input will terminate
  1063.                                the script.
  1064.  
  1065.                                EXAMPLE:
  1066.  
  1067.                                     wait :
  1068.                                     wait =
  1069.  
  1070.  
  1071.                                -----------------------------------------------
  1072.  
  1073.                   SESSION  ... in most cases, this will be the last keyword
  1074.                                in your scripts.  It means Opus should begin
  1075.                                a network session with the remote system.
  1076.  
  1077.                                The session begins with whacking, if necessary.
  1078.                                Then it moves through the SYNC procedure into
  1079.                                the exchange of bundles and files.
  1080.  
  1081.                                EXAMPLE:
  1082.  
  1083.                                     session
  1084.  
  1085.  
  1086.                                -----------------------------------------------
  1087.  
  1088.                   DOS      ... send a command to DOS.
  1089.  
  1090.                                You can process something... or even summon
  1091.                                a stand-alone netmail session-handler.
  1092.  
  1093.                                EXAMPLE:
  1094.  
  1095.                                     dos DIR
  1096.                                     dos ARCA test *.pkt
  1097.  
  1098.  
  1099.                                -----------------------------------------------
  1100.  
  1101.                   CARRIER  ... if there's no carrier when Opus reaches
  1102.                                this keyword, the script will terminate
  1103.  
  1104.                                EXAMPLE:
  1105.  
  1106.                                     carrier
  1107.  
  1108.  
  1109.                                -----------------------------------------------
  1110.  
  1111.                   INIT     ... go through the normal modem initialization
  1112.                                routine.
  1113.  
  1114.                                -----------------------------------------------
  1115.  
  1116.                   BAUD     ... set the computer's async port to the remote
  1117.                                system's baud rate
  1118.  
  1119.                                -----------------------------------------------
  1120.  
  1121.  
  1122.  
  1123.  
  1124.          CHECKLIST
  1125.          ---------
  1126.  
  1127.             * Script file names are in quotes in the node list 
  1128.               phone field.
  1129.  
  1130.             * All script files must be in the NET_INFO sub-directory.
  1131.  
  1132.             * Each line must have a keyword in the far lefthand column.
  1133.  
  1134.             * Most keywords require additional information.  This 
  1135.               information should be separated from the keyword by a 
  1136.               single space character.
  1137.  
  1138.             * Most script files should end with "session"
  1139.  
  1140.  
  1141.  
  1142.  
  1143.          SAMPLE SCRIPT
  1144.          -------------
  1145.  
  1146.          This script, for PC PURSUIT, was done by Rick Huebner:
  1147.  
  1148.  
  1149.              dos if exist outbound\007C00D2.$$? del outbound\007C00D2.$$?
  1150.              init
  1151.              baud
  1152.              xmit ~AT|~ATS0=0|~ATDT3417733|~~~~~~~~~~~~~~~~~~~~
  1153.              carrier
  1154.              xmit |~D~|
  1155.              wait =
  1156.              xmit ~D1|
  1157.              wait @
  1158.              xmit ~c dial214/12,username|
  1159.              wait =
  1160.              xmit ~password|
  1161.              wait T
  1162.              xmit ~~|~~I|~~ATZ|
  1163.              wait K
  1164.              xmit ~ATDT3809063|
  1165.              wait -
  1166.              xmit ~~~~~~
  1167.              carrier
  1168.              session
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174. ------------------------------------------------------------------------------
  1175.  
  1176.                    SAMPLE MATRIX-ORIENTED BATCH FILE
  1177.                    ---------------------------------
  1178.  
  1179.   +----------------------------------------------------------------------+
  1180.   |                                                                      |
  1181.   |  Alright - all together now..Ctrl Alt Del,Ctrl Alt Del,Ctrl Alt Del. |
  1182.   |                                                                      |
  1183.   +----------------------------------------------------------------------+
  1184.  
  1185.  
  1186.  
  1187.          Any batch file for Opus must be able to respond to the
  1188.          following pre-defined ErrorLevels:
  1189.  
  1190.             VALUE | MEANING                             | ACTION
  1191.            -------+-------------------------------------+---------
  1192.              255  | an internal error generated by      | recycle
  1193.                   | MicroSoft "C".  (eg STACK OVERFLOW) |
  1194.                   |                                     |
  1195.                5  | reserved by Opus                    | recycle
  1196.                   |                                     |
  1197.                4  | reserved by Opus                    | recycle
  1198.                   |                                     |
  1199.                3  | very very serious error (No FOSSIL, | halt
  1200.                   | no user file, etc)                  |
  1201.                   |                                     |
  1202.                2  | minor error (i/o error)             | recycle
  1203.                   |                                     |
  1204.                1  | ^C (keyboard halt request)          | halt
  1205.                   |                                     |
  1206.                0  | ???                                 | recycle
  1207.            -------+-------------------------------------+---------
  1208.  
  1209.  
  1210.  
  1211.  
  1212.          Here is a sample batch file:
  1213.  
  1214.            +----+----------------------------------------------------+
  1215.            |Line| Batch file                                         |
  1216.            +----+----------------------------------------------------+
  1217.            |    |                                                    |
  1218.            |  1 | :start                                             |
  1219.            |  2 | E:                                                 |
  1220.            |  3 | cd E:\opus                                         |
  1221.            |  4 | Opus %1 %2 %3 %4 %5 %6                             |
  1222.            |  5 | if ERRORLEVEL 255 goto start                       |
  1223.            |  6 | if ERRORLEVEL   8 goto start                       |
  1224.            |  7 | if ERRORLEVEL   7 goto bundles                     |
  1225.            |  8 | if ERRORLEVEL   6 goto prepecho                    |
  1226.            |  9 | if ERRORLEVEL   3 goto end                         |
  1227.            | 10 | if ERRORLEVEL   2 goto start                       |
  1228.            | 11 | if ERRORLEVEL   1 goto end                         |
  1229.            | 12 | if ERRORLEVEL   0 goto start                       |
  1230.            | 13 | :prepecho                                          |
  1231.            | 14 | E:\Opus\Util\ScanMail -maxmsgs 500 -short          |
  1232.            | 15 | :bundles                                           |
  1233.            | 16 | E:\Opus\oMMM -hE:\Opus\Outbound -cE:\Opus\oBUN.Ctl |
  1234.            | 17 | goto start                                         |
  1235.            | 18 | :end                                               |
  1236.            | 19 |                                                    |
  1237.            |    |                                                    |
  1238.            +----+----------------------------------------------------+
  1239.  
  1240.            NOTES:
  1241.  
  1242.               Line 5...The check for #255 isn't really needed here
  1243.                        because the following line (ErrorLevel 8) will
  1244.                        end up trapping 255.  It's put here to stress
  1245.                        that 255 is a possible ErrorLevel.
  1246.  
  1247.               Line 6...Checking for ErrorLevel 8 is a safety measure.
  1248.                        It will trap any ErrorLevels above 8, too.  In
  1249.                        other words, the batch file is saying "If you
  1250.                        get anything else just recycle."
  1251.  
  1252.               Line 7...Respond to "Matrix After Edit Exit 7".  The
  1253.                        ErrorLevel 7 means something in my netmail message
  1254.                        area has changed.  The only thing we need to do
  1255.                        is put the new messages into bundles by calling
  1256.                        oMMM.  This ErrorLevel happens after somebody
  1257.                        types a message in the netmail area.
  1258.  
  1259.               Line 8...ErrorLevel 6 is this: "Matrix After Arcmail Exit 6".
  1260.                        It means we've gotten echomail that needs to be
  1261.                        scanned then put into bundles.
  1262.  
  1263.               Line 13..PREPECHO calls ScanMail.  Note that this falls
  1264.                        through to the bundler.
  1265.  
  1266.               Line 19..With DOS, you always have to have a blank line
  1267.                        when the last item is a label.
  1268.  
  1269.               
  1270.  
  1271.  
  1272.  
  1273. ------------------------------------------------------------------------------
  1274.                            TECHNICAL STUFF 
  1275. ------------------------------------------------------------------------------
  1276.  
  1277.     THE SESSION
  1278.     -----------
  1279.  
  1280.  
  1281.          After a connection is established, there's some special
  1282.          handshaking.  The purpose of the preliminaries is to 
  1283.          let Opus determine whether or not it's dealing with another
  1284.          Opus (or compatible)... and what that other system can do.
  1285.  
  1286.          Opus is able to detect (or sniff out) another Opus system
  1287.          using the preliminaries.  Once it does that, it knows it's
  1288.          safe to drop into a more efficient netmail session than
  1289.          the one currently in use by other<tm> systems.
  1290.  
  1291.          At the beginning of a netmail session, Opus transmits a
  1292.          character called YOOHOO<tm>.  If the other system understands
  1293.          the meaning, it will respond.  If not, Opus transmits the
  1294.          TSYNC character understood by other<tm> netmail programs.
  1295.  
  1296.          If the receiving system acts interested in the YOOHOO<tm>,
  1297.          the caller sends a full packet of information.  It contains
  1298.          such things as the calling system's name and net/node.
  1299.          There's even space to add a password later.
  1300.  
  1301.          Also in the packet is a list of capabilities.  Such things
  1302.          as "I can do YMODEM and ZMODEM" are in this part of the
  1303.          packet.  This is the way the two systems agree on a file
  1304.          transfer protocol.
  1305.  
  1306.          If the receiving system gets the packet with no transmission
  1307.          errors, and if it understands everything in the packet, it
  1308.          sends back two things:
  1309.  
  1310.                   * An acknowledgement of the packet
  1311.  
  1312.                   * The beginning of YOOHOO/2U2<tm>
  1313.  
  1314.          The YOOHOO/2U2<tm> is just a YOOHOO<tm> going the opposite
  1315.          direction: from the receiver to the caller.
  1316.  
  1317.          At the end of the preliminaries, both systems know precisely
  1318.          who they are talking to... and the capabilities of the other
  1319.          side.  Using a preset formula, they can agree on a file
  1320.          transfer protocol.
  1321.  
  1322.          The YOOHOO<tm> method has plenty of room to grow... to add
  1323.          additional capabilities.  For example, in the works are some 
  1324.          methods for real-time bundling which will do away with the
  1325.          need to scan and toss echomail.
  1326.  
  1327.          The method does not cause ill effects on any other<tm>
  1328.          netmail system currently in operation.  If anything, the
  1329.          other<tm> system will simply think there was one byte of
  1330.          debris on the phone line in front of the traditional
  1331.          TSYNC character.  Unless the other end responds to the
  1332.          YOOHOO<tm> character, no other data is transmitted.
  1333.  
  1334.          Although YOOHOO and YOOHOO/2U2 are trademarked and the
  1335.          handshake itself is copyrighted, this is NOT a proprietary
  1336.          method.  Specifications are available on request.
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.               
  1344.      FILES IN THE OUTBOUND AREA
  1345.      --------------------------
  1346.  
  1347.  
  1348.                   - "OUT" files
  1349.  
  1350.                     An "OUT" file is a regular IFNA-type message bundle.
  1351.                     The file name is the remote system's net/node expressed
  1352.                     as an 8-digit hex number.  The file extension is ".OUT".
  1353.                     For example, a bundle destined for 124/108 would be
  1354.                     in a file called "007C006C.OUT".
  1355.  
  1356.                     If present, the OUT file is sent using XModem/Crc.
  1357.  
  1358.  
  1359.  
  1360.                   - Files listed in a "FLO" file
  1361.  
  1362.                     A "FLO" file is normally used to contain a list of
  1363.                     files declared as "File-Attach" in messages in the
  1364.                     "OUT" file.  In other words, if you create a 
  1365.                     "File-Attach" message, the message itself will be put
  1366.                     into the "OUT" file, and the name of the file(s) to be
  1367.                     sent will be put into the "FLO" file.
  1368.  
  1369.                     The file name is the remote system's net/node expressed
  1370.                     as an 8-digit hex number.  The file extension is ".FLO".
  1371.                     For example, a bundle destined for 124/108 would be
  1372.                     in a file called "007C006C.FLO".
  1373.  
  1374.                     If present, the FLO file is sent using the VBTS protocol. 
  1375.                     That stands for Voodoo-Bondage TeLink/Sealink.  First,
  1376.                     there is a MODEM7 file name.  That is followed by a
  1377.                     Sealink (or XModem) file transfer.  Normally, this
  1378.                     method is compatible with both Sealink and Telink
  1379.                     receivers.
  1380.  
  1381.                     IMPORTANT: If the first character of the file name
  1382.                                listed in the flow file is "#", then Opus
  1383.                                will truncate the file if it is successfully
  1384.                                transmitted.  In other words, if the line
  1385.                                "#12345678.TU1" appears, Opus will send the
  1386.                                file "12345678.TU1" and then make it a
  1387.                                zero-length file if the transmission is
  1388.                                consumated.
  1389.  
  1390.  
  1391.  
  1392.      Z EVENTS
  1393.      --------
  1394.  
  1395.                   The following is the specs on the Z event.  It's not
  1396.                   useful except to a programmer interested in twiddling
  1397.                   or interpreting the schedule data file...
  1398.  
  1399.                            /*-----------------------------------------------*/
  1400.                            /*                                               */
  1401.                            /* EVENTS                                        */
  1402.                            /*                                               */
  1403.                            /*-----------------------------------------------*/
  1404.                            #define EXT_EVENT   'X'    /* External event     */
  1405.                            #define YELL_EVENT  'Y'    /* Yell event         */
  1406.                            #define SCHEDS      35     /* Max. # of events   */
  1407.                            
  1408.                            struct _time
  1409.                               begin
  1410.                                  word  year;          /* Unused             */
  1411.                                  word  month;         /* 0..12              */
  1412.                                  word  day;           /* 0..31              */
  1413.                                  word  daywk;         /* 0..7               */
  1414.                                  word  hour;          /* 0..23              */
  1415.                                  word  mins;          /* 0..59              */
  1416.                                  word  sec;           /* Unused             */
  1417.                               end;
  1418.  
  1419.  
  1420.                            /*-----------------------------------------------*/
  1421.                            /* Schedule file record                          */
  1422.                            /*-----------------------------------------------*/
  1423.                            struct _sched
  1424.                               begin
  1425.                                  struct _time time;   /* Starting time      */
  1426.                                  word  len;           /* Duration of event  */
  1427.                                  int   enable;        /* 1==Enabled         */
  1428.                                  word  trigger;       /* Unknown/unused     */
  1429.                                  word  result;        /* X errorlevel       */
  1430.                                  byte  tag;           /* Event type         */
  1431.                                  byte  junk_1;        /*                    */
  1432.                                  word  a;             /* OPUS: Reserved     */
  1433.                                  word  b;             /* OPUS: Reserved     */   
  1434.                                  word  c;             /* OPUS: Reserved     */
  1435.                                  word  matrix_mask;   /* Matrix ability     */
  1436.                                  byte  junk_2;        /* OPUS: Reserved     */
  1437.                                  byte  GMT;           /* OPUS: Set=GMT      */
  1438.                               end;
  1439.  
  1440.                            The `matrix_mask' field is valid only if `tag'
  1441.                            is Z and `result' is 1.  It is subject to contain
  1442.                            debris or be otherwise defined in other cases.
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.                  The chief cause of problems is solutions.
  1451.  
  1452.                              -- Eric Sevareid --
  1453.  
  1454.  
  1455.                                     ###
  1456.